package com.ikaros.concurrency.example.singleton;

import com.ikaros.concurrency.annotations.NotRecommend;
import com.ikaros.concurrency.annotations.ThreadSafe;

/**
 * 懒汉模式+synchronized -> 线程安全
 * 单例模式在第一次使用时进行创建
 * 不推荐：加了synchronized,增加了性能上面的开销
 */
@ThreadSafe
@NotRecommend
public class SingletonLanHanSafeNotRecommend {
    //私有构造函数
    private SingletonLanHanSafeNotRecommend() {
    }

    //单例对象
    private static SingletonLanHanSafeNotRecommend instance = null;

    //静态的工厂方法
    public static synchronized SingletonLanHanSafeNotRecommend getInstance() {
        //多线程下可能创建多个实例
        if (instance == null) {
            instance = new SingletonLanHanSafeNotRecommend();
        }
        return instance;
    }
}
